1321C - Remove Adjacent - CodeForces Solution


brute force constructive algorithms greedy strings *1600

Please click on ads to support us..

Python Code:

n = int(input())
x = input()

def remove(tmp, x):
    removed = 0
    
    if len(tmp) >= 2 and tmp[0] == x and tmp[1] == x - 1:
        removed += 1
        tmp.pop(0)

    i = 0
    n = len(tmp)
    while i < n:
        if i == 0:
            if len(tmp) >= 2 and tmp[0] == x and tmp[1] == x - 1:
                removed += 1
                tmp.pop(0)
                n -= 1
                continue
        elif i == n - 1:
            if len(tmp) >= 2 and tmp[-1] == x and tmp[-2] == x - 1:
                removed += 1
                tmp.pop(len(tmp) -1 )
                n -= 1
                continue
        elif tmp[i] == x and (tmp[i + 1] == x - 1 or tmp[i - 1] == x - 1 ):
            removed += 1
            tmp.pop(i)
            i -= 1
            n -= 1
            continue
        i += 1

    return removed
    


def solve (x, n):
    out = 0
    tmp = [ord(e) for e in x]
    chars = list(set(tmp[::]))
    chars.sort(reverse=True)

    for char in chars:
        out += remove(tmp, char)

    
    print(out)


solve(x,n)

C++ Code:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin>>n;
    string s;
    cin>>s;
    for(int i=122; i>=97;i--)
    {
        for(int j=0; j<n; j++)
        {
            if(s[j]==i)
            {
                
                if(s[j-1]==i-1 or s[j+1]==char(i-1))
                {
                    s.erase(j,1);
                    j=-1;
                }
            }
        }
    }
  //  cout<<s<<endl;
    cout<<n-s.length()<<endl;
}


Comments

Submit
0 Comments
More Questions

237A - Free Cash
1615B - And It's Non-Zero
1619E - MEX and Increments
34B - Sale
1436A - Reorder
1363C - Game On Leaves
1373C - Pluses and Minuses
1173B - Nauuo and Chess
318B - Strings of Power
1625A - Ancient Civilization
864A - Fair Game
1663B - Mike's Sequence
448A - Rewards
1622A - Construct a Rectangle
1620A - Equal or Not Equal
1517A - Sum of 2050
620A - Professor GukiZ's Robot
1342A - Road To Zero
1520A - Do Not Be Distracted
352A - Jeff and Digits
1327A - Sum of Odd Integers
1276A - As Simple as One and Two
812C - Sagheer and Nubian Market
272A - Dima and Friends
1352C - K-th Not Divisible by n
545C - Woodcutters
1528B - Kavi on Pairing Duty
339B - Xenia and Ringroad
189A - Cut Ribbon
1182A - Filling Shapes